// Some usefull variables
// 最大生命值
var maxHealth = 10
// 最大食物量
var maxFood = 10
// 手牌数量
var handSize = 5
// 卡牌uid
var cardUid = 0
// 当前打出的牌
var currentPlayingCard = null

// The consolidated state of our app
/*
 * 在 创 建 组 件 之 前， 需 要 添 加 一 些 新 的 数 据 属 性。 
 * turn ：当 前 回 合 数， 从 1 开 始 计 数 
 * players ：玩 家 对 象 的 数 组 
 * currentPlayerIndex ：当 前 玩 家 在 players 数 组 中 的 索 引
 */
var state = {
	// World
	canPlay: false,
	worldRatio: getWorldRatio(),
	turn: 1,
	players: [{
			name: 'gary',
			// 游戏数据
			food: 10,
			health: 10,
			// 是否跳过下个回和
			skipTurn: false,
			// 跳过了上个回合
			skippedTurn: false,
			hand: [],
			lastPlayedCardId: null,
			dead: null,
		},
		{
			name: 'nuck',
			food: 10,
			health: 10,
			skipTurn: false,
			skippedTurn: false,
			hand: [],
			lastPlayedCardId: null,
			dead: null,
		},
	],
	// Math.round( Math.random()) 方 法 将 随 机 使 用 0 或 1 来 决 定 谁 先 行 动。
	currentPlayerIndex: Math.round(Math.random()),
	activeOverlay: null, // 保存当前显示浮层的名称，如果没有浮层显示，则为null
	get currentPlayer() {
		return state.players[state.currentPlayerIndex]
	},
	// 回合，轮到哪个player的索引
	get currentOpponentId() {
		return state.currentPlayerIndex === 0 ? 1 : 0;
	},
	// 返回响应的player对象
	get currentOpponent() {
		return state.players[state.currentOpponentId];
	},
	/* 
		牌堆
		drawPile 属 性 是 玩 家 可 以 抽 牌 的 牌 堆。
		使 用 cards.js 中 定 义 的 pile 对 象 对 其 初 始 化。 
		pile 的 每 个 键 都 是 卡 牌 定 义 中 的 id ，值 则 是 牌 堆 中 这 种 类 型 的 卡 牌 数 量。
	*/
	drawPile: pile,
	/*
		弃牌堆
		discardPile 属 性 与 drawPile 属 性 相 同， 
		不 过 它 的 用 处 是： 玩 家 打 出 的 所 有 卡 牌 都 将 从 手 牌 中 移 除， 并 放 到 这 个 弃 牌 堆 中。 
		如 果 drawPile 空 了， 将 使 用 discardPile 重 新 填 满 它（ 此 时 discardPile 将 变 为 空）。
	*/
	discardPile: {},
	// 获取当前玩家手牌
	get currentHand() {
		return state.currentPlayer.hand;
	}
}
